
package com.dingwen.stuprobooval.vo;


import com.dingwen.stuprobooval.constant.enu.ResultCode;
import com.dingwen.stuprobooval.constant.fac.TipAndMessage;
import org.springframework.util.ObjectUtils;



/**
 * result 生成
 *
 * @author dingwen
 * @date 2021/06/29
 */
public class ResultGenerator {

    /**
     * 生成结果
     * 1.成功
     * 2.没有数据
     *
     * @return {@link Result}
     */
    public static Result genOkResult() {
        return Result.builder().build();
    }

    /**
     * 生成结果
     * 1. 成功
     * 2. 消息
     *
     * @param message 消息
     * @return {@link Result}
     */
    public static Result genOkResult(String message) {
        return Result.builder().message(message).build();
    }


    /**
     * 生成结果
     * 1.成功
     * 2.数据
     *
     * @return {@link Result}
     */
    public static Result genOkResult(Object data) {
        return Result.builder()
                .data(data)
                .code(ObjectUtils.isEmpty(data) ? ResultCode.RESULT_BLANK.code() : ResultCode.OK.code())
                .message(ObjectUtils.isEmpty(data) ? TipAndMessage.RESULT_BLANK : TipAndMessage.SUCCESS)
                .build();
    }

    /**
     * 生成失败的结果
     * 1. 消息
     *
     * @param message 消息
     * @return {@link Result}
     */
    public static Result genFailureResult(String message) {
        return Result.builder().message(message).code(ResultCode.FAILURE.code()).build();
    }

    /**
     * 生成失败的结果
     * 1. 消息
     * 2. 状态码
     *
     * @param message    消息
     * @param resultCode 结果代码
     * @return {@link Result}
     */
    public static Result genFailureResult(String message, ResultCode resultCode) {
        return Result.builder().message(message).code(resultCode.code()).build();
    }
}